package com.example.socialapp.domain.usecase.auth

import com.example.socialapp.domain.repository.AuthRepository
import javax.inject.Inject

/**
 * 忘记密码用例
 */
class ForgotPasswordUseCase @Inject constructor(
    private val authRepository: AuthRepository
) {
    /**
     * 发送重置密码邮件
     *
     * @param email 用户邮箱
     * @return 成功返回Unit，失败返回异常
     */
    suspend operator fun invoke(email: String): Result<Unit> {
        // 验证邮箱
        if (email.isBlank()) {
            return Result.failure(IllegalArgumentException("邮箱不能为空"))
        }
        
        if (!isValidEmail(email)) {
            return Result.failure(IllegalArgumentException("邮箱格式不正确"))
        }
        
        // 调用仓库执行重置密码
        return authRepository.forgotPassword(email)
    }
    
    /**
     * 验证邮箱格式
     *
     * @param email 邮箱
     * @return 是否有效
     */
    private fun isValidEmail(email: String): Boolean {
        return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()
    }
} 